package com.ucar.train.service;

import com.ucar.train.dto.CrmDTO;
import com.ucar.train.dto.CrmEnterpriseDTO;
import com.ucar.train.dto.CrmPersonDTO;
import com.ucar.train.dto.StoreDTO;
import com.ucar.train.vo.CrmVO;

import java.util.List;

/**
 * @author wufuqiang
 * @title: CrmService
 * @projectName:train-parent
 * @description: T0D0
 * @created 2019-08-13 20:47
 */
public interface CrmService {

    /**
     * @Author: wufuqiang
     * @Name: login
     * @Description 登录
     * @Param crmDTO 账号密码
     * @return CrmVO 用户对象
     * @Date: 2019/8/13
     */
    CrmDTO login(CrmDTO crmDTO);

    /**
     * @Author: wufuqiang
     * @Name: Register
     * @Description 个人用户注册（后期加BO，多态，与企业注册整合成一个方法）
     * @Param crmTO 用户基本注册信息对象
     * @Param crmPersonDTO 用户特有信息对象
     * @return 注册结果 0：注册失败 1：注册成功
     * @Date: 2019/8/13
     */
    Integer personRegister(CrmDTO crmDTO, CrmPersonDTO crmPersonDTO);

    /**
     * @Author: wufuqiang
     * @Name: Register
     * @Description 企业用户注册
     * @Param crmTO 用户基本注册信息对象
     * @Param crmPersonDTO 用户特有信息对象
     * @return 注册结果 0：注册失败 1：注册成功
     * @Date: 2019/8/13
     */
    Integer enterpriseRegister(CrmDTO crmDTO, CrmEnterpriseDTO crmEnterpriseDTO);


    /**
     * @Author: wufuqiang
     * @Name: getCrm
     * @Description 查询用户信息
     * @Param crmDTO 用户身份信息
     * @return CrmVO 用户信息
     * @Date: 2019/8/13
     */
    CrmVO getCrm(CrmDTO crmDTO);

    /**
     * @Author: wufuqiang
     * @Name: updateCrm
     * @Description 修改个人用户信息
     * @Param crmDTO 用户信息对象
     * @Param crmPersonDTO 用户特有信息对象
     * @return Integer 修改结果
     * @Date: 2019/8/13
     */
    Integer updatePersonCrm(CrmDTO crmDTO, CrmPersonDTO crmPersonDTO);

    /**
     * @Author: wufuqiang
     * @Description: 修改企业用户信息
     * @Param:a
     * @return:a
     * @Date: 2019/8/16
     */
    Integer updateEnterpriseCrm(CrmDTO crmDTO, CrmEnterpriseDTO crmEnterpriseDTO);


    /**
     * @Author zhoujinmu
     * @Description 进入订单页面加载门店信息
     * @Date 2019/8/14 12:43
     */
    List<StoreDTO> selectStore();

    /**
     * @Author zhoujinmu
     * @Description 顾客下单时，先判断是什么类型的顾客
     * @Date 2019/8/14 13:13
     */
    CrmDTO selectCrmById(Long id);

    /**
     * @Author zhoujinmju
     * @Description 顾客下单时，显示个人顾客信息
     * @Date 2019/8/14 12:43
     */
    CrmPersonDTO selectCrmPersonById(Long id);

    /**
     * @Author zhoujinmu
     * @Description 顾客下单时，显示企业顾客信息
     * @Date 2019/8/14 13:09
     */
    CrmEnterpriseDTO selectCrmEnterpriseById(Long id);

    /**
     * 功能描述: <br>
     * 〈根据crmId查询个人信息〉
     * @Param: [crmID]
     * @Return: com.ucar.train.dto.CrmDTO
     * @Author: XuMingZhi
     * @Date: 2019/8/19 12:37
     */
    CrmDTO selectByCustomerID(Long crmID);
}
